DNS概述
更新時間 2024-01-05 16:04:23
最近更新時間: 2024-01-05 16:04:23
分享文章
本文主要介紹DNS概述。
CoreDNS介紹
創建集群時會安裝CoreDNS插件,CoreDNS是用來做集群內部域名解析。
在kube-system命名空間下可以查看到CoreDNS的Pod。
$ kubectl get po --namespace=kube-system
NAME READY STATUS RESTARTS AGE
coredns-7689f8bdf-295rk 1/1 Running 0 9m11s
coredns-7689f8bdf-h7n68 1/1 Running 0 11m
CoreDNS安裝成功后會成為DNS服務器,當創建Service后,CoreDNS會將Service的名稱與IP記錄起來,這樣Pod就可以通過向CoreDNS查詢Service的名稱獲得Service的IP地址。
訪問時通過nginx..svc.cluster.local訪問,其中nginx為Service的名稱,為命名空間名稱,svc.cluster.local為域名后綴,在實際使用中,在同一個命名空間下可以省略.svc.cluster.local,直接使用ServiceName即可。
使用ServiceName的方式有個主要的優點就是可以在開發應用程序時可以將ServiceName寫在程序中,這樣無需感知具體Service的IP地址。
CoreDNS插件安裝后也有一個Service,在kube-system命名空間下,如下所示。
$ kubectl get svc -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
coredns ClusterIP 10.247.3.10 ?
默認情況下,其他Pod創建后,會將coredns Service的地址作為域名解析服務器的地址寫在Pod的 /etc/resolv.conf 文件中,創建一個Pod,查看/etc/resolv.conf文件,如下所示。
$ kubectl exec test01-6cbbf97b78-krj6h -it -- /bin/sh
/ # cat /etc/resolv.conf
nameserver 10.247.3.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5 timeout single-request-reopen
集群內域名解析示例圖

